package com.core.ingenium.model;

import java.io.Serializable;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;


@Entity
@NamedQueries( { @NamedQuery(name = "Carrera.findAll", query = "select o from Carrera o") })
@Table(name = "\"carrera\"")
public class Carrera implements Serializable {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)        
    @Column(name = "id", nullable = false)
    private int id;
    @Column(name = "nombre")
    private String nombre;
    @OneToMany(mappedBy = "carrera")
    private List<UsuarioCarrera> lstUsuarioCarrera;
    @OneToMany(mappedBy = "carrera")
    private List<Plantilla> lstPlantillas;
    @OneToMany(mappedBy = "carrera")
    private List<CarreraNivel> lstCarreraNivel;

    public Carrera() {
    }

    public Carrera(int id, String nombre) {
        this.id = id;
        this.nombre = nombre;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public List<UsuarioCarrera> getLstUsuarioCarrera() {
        return lstUsuarioCarrera;
    }

    public void setLstUsuarioCarrera(List<UsuarioCarrera> lstUsuarioCarrera) {
        this.lstUsuarioCarrera = lstUsuarioCarrera;
    }

    public UsuarioCarrera addUsuarioCarrera(UsuarioCarrera usuarioCarrera) {
        getLstUsuarioCarrera().add(usuarioCarrera);
        usuarioCarrera.setCarrera(this);
        return usuarioCarrera;
    }

    public UsuarioCarrera removeUsuarioCarrera(UsuarioCarrera usuarioCarrera) {
        getLstUsuarioCarrera().remove(usuarioCarrera);
        usuarioCarrera.setCarrera(null);
        return usuarioCarrera;
    }

    public List<Plantilla> getLstPlantillas() {
        return lstPlantillas;
    }

    public void setLstPlantillas(List<Plantilla> lstPlantillas) {
        this.lstPlantillas = lstPlantillas;
    }

    public Plantilla addPlantilla(Plantilla plantilla) {
        getLstPlantillas().add(plantilla);
        plantilla.setCarrera(this);
        return plantilla;
    }

    public Plantilla removePlantilla(Plantilla plantilla) {
        getLstPlantillas().remove(plantilla);
        plantilla.setCarrera(null);
        return plantilla;
    }

    public List<CarreraNivel> getLstCarreraNivel() {
        return lstCarreraNivel;
    }

    public void setLstCarreraNivel(List<CarreraNivel> lstCarreraNivel) {
        this.lstCarreraNivel = lstCarreraNivel;
    }

    public CarreraNivel addCarreraNivel(CarreraNivel carreraNivel) {
        getLstCarreraNivel().add(carreraNivel);
        carreraNivel.setCarrera(this);
        return carreraNivel;
    }

    public CarreraNivel removeCarreraNivel(CarreraNivel carreraNivel) {
        getLstCarreraNivel().remove(carreraNivel);
        carreraNivel.setCarrera(null);
        return carreraNivel;
    }
}
